
/**
 * @param {number[]} weights
 * @param {number} D
 * @return {number}
 */
 var shipWithinDays = function(weights, D) {
    function judge(c){
        let n=0,t=0;
        for(let i of weights){
            if(t+i>c){
                n++;
                t=i;
            }
            else{
                t+=i;
            }
        }
        n++;
        if(n<=D){
            return 1;
        }
        else{
            return 0;
        }
    }
    let left=Math.max(...weights),right=weights.reduce((a,b) => a+b),mid;
    while(left<right){
        mid=Math.floor((left+right)/2);
        if(judge(mid)){
            right=mid;
        }
        else{
            left=mid+1;
        }
    }
    return left;
};

console.log(shipWithinDays([3,2,2,4,1,4],3))


// 执行用时：
// 120 ms
// , 在所有 JavaScript 提交中击败了
// 39.38%
// 的用户
// 内存消耗：
// 41.6 MB
// , 在所有 JavaScript 提交中击败了
// 45.63%
// 的用户